Programming the states of a multi-level cell in a flash memory is a two-phase process. In a first phase, a least-significant-bit page is written to an intermediate state if not an erased bit. In a second phase, the least-significant-bit page is sensed by the flash memory and thereafter the least-significant-bit page and a most-significant-bit page are written to the flash memory. Since the most-significant-bit page is written based on the sensed least-significant-bit page without passing the read data through an error correction process in a controller, the final programmed state may be in error. The error mechanism arises from a rough distribution of intermediate states intersecting with an erased state. Programming to a wrong state causes write errors with high-magnitude soft-decoding information of the wrong signs at an input of a soft-decision decoder. Such errors degrade the performance of the soft-decision decoder in an error floor region.
Compacting several single-level-cell pages into a triple-level-cell page is subject to the same phenomena. Write errors created while reading the single-level-cell pages carry into the triple-level-cell page if not corrected first. The write errors can affect the success rate of soft-decision decoding of the triple-level-cell data.